/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bgu.ppm.sim.api.prop;

import bgu.sonar.util.collections.ImmutableMapView;
import bgu.sonar.util.evt.EventListeners;

/**
 *
 * @author User
 */
public interface HasProperties {

    ImmutableMapView<String, Property> getProperties();

    void addProperty(Property p);

    void removeProperty(String name);

    /**
     *
     * @param name
     * @param value
     *
     * can throw PropertyModificationException if property with the given name
     * doesn't exists or value not valid for the property
     *
     */
    void setPropertyValue(String name, Object value);

    EventListeners<PropertiesListener> getPropertiesListeners();
}
